package scheduling;

import java.sql.*;

public class AvvisoScadenzaBene {

	private static Connection con = null;
	
	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		
		String url="jdbc:oracle:thin:@localhost:1521:xe";
		String driver = "oracle.jdbc.driver.OracleDriver";
		Class.forName(driver);
		con = DriverManager.getConnection(url,"azienda","azienda");
		
		String sql = "select *  from bene b, sotto_categoria_bene s " + 
			" where b.sotto_categoria_bene = s.codice and s.categoria_bene = 'SA'";
		Statement s = con.createStatement();
		ResultSet rs = s.executeQuery(sql);
		
		String email = "select email from account where tipologia = 1";
		Statement sEmail = con.createStatement();
		ResultSet rsEmail = sEmail.executeQuery(email);
		String amministratore = "";
		while (rsEmail.next()){
			amministratore = rsEmail.getString("email");
		}
		if (amministratore.equals("")){
			System.out.println("AMMINISTRATORE NON TROVATO");
		}
		else{
			
			java.util.Date DataCorrente = new java.util.Date();
			while (rs.next()){

				java.sql.Date datascadenza = rs.getDate("data_scadenza");
				//System.out.println(datascadenza);
				System.out.println(rs.getString(1));
				long differenzaInMs = datascadenza.getTime() - DataCorrente.getTime();
				if (differenzaInMs > 0){
					if (differenzaInMs < (1000*60*60*24)){
						
						CallableStatement cst = con.prepareCall("{call spedisci_mail(?,?,?,?)}");
						cst.setString(1, "servizio");
						//System.out.println(amministratore);
						cst.setString(2,amministratore);
						cst.setString(3, "Scadenza bene");
						cst.setString(4, "Attenzione il bene scade tra un giorno.");
						cst.execute();
					}
					else if (differenzaInMs < (1000*60*60*24)*15 && differenzaInMs > (1000*60*60*24)*14){
						CallableStatement cst = con.prepareCall("{call sendMail(?,?,?,?)}");
						cst.setString(1, "servizio");
						cst.setString(2,amministratore);
						cst.setString(3, "Scadenza bene");
						cst.setString(4, "Attenzione il bene scade tra 15 giorni.");
						cst.execute();
					}
					else if (differenzaInMs < (1000*60*60*24)*30 && differenzaInMs > (1000*60*60*24)*29){
						CallableStatement cst = con.prepareCall("{call sendMail(?,?,?,?)}");
						cst.setString(1, "servizio");
						cst.setString(2, amministratore);
						cst.setString(3, "Scadenza bene");
						cst.setString(4, "Attenzione il bene scade tra 30 giorni.");
						cst.execute();
					}
						
				}
				
			}
		}

	}

}
